#include "User_USART.h"
 #include "stm32f10x.h"
  
  
  //USART????GPIO???
  void User_USART_GPIO_Config(void)
  {
      GPIO_InitTypeDef USART_GPIO_TX,USART_GPIO_RX;
  
     //???USART???GPIO???,USART?????GPIOA?
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 
     //???GPIO_InitTypeDef???--USART TX PIN
     USART_GPIO_TX.GPIO_Mode = GPIO_Mode_AF_PP;
     USART_GPIO_TX.GPIO_Pin = GPIO_Pin_9;
     USART_GPIO_TX.GPIO_Speed = GPIO_Speed_50MHz;
     
     //??USART TX PIN????????
     GPIO_Init(GPIOA, &USART_GPIO_TX);
 
     
     //???GPIO_InitTypeDef???--USART RX PIN  ????,?????????GPIO_Speed??
     USART_GPIO_RX.GPIO_Mode = GPIO_Mode_IN_FLOATING;
     USART_GPIO_RX.GPIO_Pin = GPIO_Pin_10;
     
     //??USART RX PIN????????
     GPIO_Init(GPIOA, &USART_GPIO_RX);
     
 
 }
 
 
 //USART???????
 void User_USART_Config(void)
 {
 
     USART_InitTypeDef USART_Config;
 
     //??USART1??
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
 
     //???USART_InitTypeDef???
     USART_Config.USART_BaudRate = 115200;
     USART_Config.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
     USART_Config.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
     USART_Config.USART_Parity = USART_Parity_No;
     USART_Config.USART_StopBits = USART_StopBits_1;
     USART_Config.USART_WordLength = USART_WordLength_8b;
 
     //??USART1??????
     USART_Init(USART1, &USART_Config);
 
     //??USART1 ????RXEN?????,??????????????,RXEN???????
     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
 
     //????USART1,??????
     USART_Cmd(USART1, ENABLE);
     
     
 }
 
 
 
 //???????????
 void User_USART_Send_Byte(USART_TypeDef* pUSARTX, uint8_t Data)
{

	//????????8bit??
	pUSARTX->DR = (Data & (uint16_t)0x01FF);	

	//USART_GetFlagStatus??????????
	while(USART_GetFlagStatus(pUSARTX, USART_FLAG_TXE) == RESET);
	
}


//????????????,??????????????,char???8bit,???????????????int???,?ASCII??
void User_UART_Send_String(USART_TypeDef* pUSARTX, char* str)
{
  unsigned int i = 0;
	do	
	{
		User_USART_Send_Byte(pUSARTX, *(str + i));
		i++;
	}
	while(*(str+i)!='\0');

		//USART_GetFlagStatus????????????
		while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
  

	{
	}
}
